home *** CD-ROM | disk | FTP | other *** search
/ Aminet 39 / Aminet 39 (2000)(Schatztruhe)[!][Oct 2000].iso / Aminet / biz / swood / FW_AllInOne.lha / Makros / AGImport.long < prev    next >
Text File  |  1998-01-23  |  27KB  |  899 lines

  1. /*AmigaGuide2FWDoc
  2.   0.7beta 09.01.98 */
  3.  
  4. Parse ARG FW
  5.  
  6. if ~show('L',"rexxreqtools.library") then
  7.    if ~addlib('rexxreqtools.library',0,-30,0) then do
  8.       ShowMessage 1 1 '"Fehler...." "Benötige Libs:rexxreqtools.library" " A B B R U C H ! !" "Okay" "" ""'
  9.       exit
  10.    end
  11.  
  12. IF ~show('L','tritonrexx.library') then
  13.    IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN DO
  14.       ShowMessage 2 1 '"Fehler...." "Benötige Libs:tritonrexx.library" "" "Abbruch" "" ""'
  15.       exit
  16.    END
  17.  
  18. R='0A'X
  19. SIGNAL ON SYNTAX
  20.  
  21. If FW='' then do
  22.    Address='FinalW'
  23.    Options results
  24.  
  25.    STATUS PORTNAME
  26.    FW = result
  27. End
  28.    address(FW)
  29.  
  30. CtrlUp
  31. ShiftUp
  32. AltUp
  33.  
  34. address "REXX"
  35. If open('Hilfe',"S:FW_Paket.prefs","R") then do    /* Hilfe-Verzeichnis */
  36.    HilfeVerz=readln('Hilfe')
  37.    Call Close('Hilfe')
  38. End
  39. else HilfeVerz=''
  40.  
  41. If ~exists("s:FW_AGImport.prefs") then do
  42.    USchrift="Courier_Bold"; USize=14
  43.    TSchrift="Courier";      TSize=10
  44.    Schablone="(siehe %K, Seite %S)"
  45.    speed=1
  46.    Umbruch=0
  47.    node=0
  48. end
  49. else do
  50.    Call Open("prefs","S:FW_AGImport.prefs","R")
  51.       USchrift=readln("prefs")
  52.       USize   =readln("prefs")
  53.       TSchrift=readln("prefs")
  54.       TSize   =readln("prefs")
  55.       Schablone=readln("prefs")
  56.       speed   =readln("prefs")
  57.       Umbruch =readln("prefs")
  58.       node =readln("prefs")
  59.    Call Close("prefs")
  60. end
  61.  
  62. speed.0=2
  63. speed.1="normal"
  64. speed.2="schnell"
  65.  
  66. pos = max(index(USchrift,':'),lastpos('/',USchrift))
  67. If pos~=0 then fond1=Delstr(USchrift,1,pos)
  68.    else fond1=USchrift
  69. pos = max(index(TSchrift,':'),lastpos('/',TSchrift))
  70. If pos~=0 then fond2=Delstr(TSchrift,1,pos)
  71.    else fond2=TSchrift
  72.  
  73. If Umbruch=0 then UB="nein"
  74.    else UB="ja"
  75. If node=0 then NO="nein"
  76.    else NO="ja"
  77. o1="Überschrift: "||fond1||", Größe: "||USize
  78. o2="Mengentext: "||fond2||", Größe: "||TSize
  79. o3="Ausgabe: "||Schablone||" Geschw.: "||speed.speed
  80. o4="Seitenumbruch: "||UB||", @node: "||NO
  81.  
  82. oldspeed=speed
  83. oldUmbruch=Umbruch
  84. oldnode=node
  85. oldUSchrift=USchrift; oldTSchrift=TSchrift
  86. oldfond1=fond1; oldfond2=fond2
  87.  
  88. apptags = 'TRCA_Name     AG2FW',
  89.           'TRCA_LongName "AmigaGuideKonverter"',
  90.           'TRCA_Info     "für FinalWriter"',
  91.           'TRCA_Version  "1.0 registered"',
  92.           'TRCA_Release  "1"',
  93.           'TRCA_Date     "09.01.98"',
  94.           'TAG_END'
  95.  
  96. /*******************************************************************************
  97. ** Aufbau der GUI
  98. *******************************************************************************/
  99.  
  100. windowtags = WindowID(1),
  101.              WindowPosition('TRWP_CENTERDISPLAY'),
  102.              WindowFlags('TRWF_NOMINTEXTWIDTH'),
  103.              PubScreenName('FinalWriterPubScreen'),
  104.              WindowTitle("AmigaGuideImport"),
  105.              BeginMenu('Projekt'),
  106.                 MenuItem('Voreinsteller...',102),
  107.                 'ItemBarlabel',
  108.                 MenuItem('Q_Verlassen',104),
  109.              BeginMenu('?'),
  110.                 MenuItem('?_Info',101),
  111.                 MenuItem('H_Hilfe',103),
  112.              'HorizGroupAC SpaceS',
  113.                 'VertGroupAC SpaceS',
  114.                    'HorizSeparator',
  115.                    'SpaceS',
  116.                    TextH(o1) 'TRAT_ID 5',
  117.                    TextH(o2) 'TRAT_ID 6',
  118.                    TextH(o3) 'TRAT_ID 7',
  119.                    TextH(o4) 'TRAT_ID 8',
  120.                    'SpaceS',
  121.                    'HorizSeparator',
  122.                    'Space',
  123.                    Progress(100,0,7) 'TRAT_Flags TRCY_RIGHTLABELS',
  124.                    'SpaceS',
  125.                    'HorizGroupSA',
  126.                       TextN("0"),
  127.                       'SpaceB Space SpaceB',
  128.                       TextN("25"),
  129.                       'SpaceB Space SpaceB',
  130.                       TextN("50"),
  131.                       'SpaceB Space SpaceB',
  132.                       TextN("75"),
  133.                       'SpaceB Space SpaceB',
  134.                       TextN("100"),
  135.                    'EndGroup',
  136.                    'SpaceS',
  137.                    'HorizgroupEC',
  138.                       Button('_Anwenden',1),
  139.                       'SpaceS',
  140.                       Button('_Verweise',3),
  141.                       'SpaceS',
  142.                       Button('Ab_bruch',2),
  143.                    'EndGroup SpaceS',
  144.                 'EndGroup SpaceS',
  145.              'EndGroup SpaceS',
  146.           'EndProject'
  147.  
  148. app = TR_CREATEAPP('TRCA_Name AGImport')
  149.  
  150. /*******************************************************************************
  151. ** Abfrage der GUI
  152. *******************************************************************************/
  153.  
  154. IF app ~= '00000000'x THEN DO
  155.    window1 = TR_OPENPROJECT(app,windowtags)
  156.    IF window1 ~= '00000000'x THEN DO
  157.       ende = 0
  158.  
  159.       DO WHILE ~ende
  160.          CALL TR_WAIT(app,'')
  161.  
  162.          DO WHILE TR_HANDLEMSG(app,'event')
  163.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende=1
  164.  
  165.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  166.                SELECT
  167.                   WHEN event.trm_id = 1 THEN Call program      /*starten*/
  168.                   WHEN event.trm_id = 3 THEN Call Verweisen    /*Verweise*/
  169.                   WHEN event.trm_id = 2 THEN ende=1            /*ende*/
  170.  
  171.                   WHEN event.trm_id = 101 THEN Call rtezrequest("Aus dem Makro-Paket:"||R||R||"AmigaGuideImport V1.0 für FW"||R||"© 1998 Heiko Schröder","Danke für Ihre Registrierung.","Info","rt_pubscrname=FinalWriterPubScreen")
  172.                   WHEN event.trm_id = 102 THEN Call Voreinstellung
  173.                   WHEN event.trm_id = 103 THEN address command "run Multiview PUBSCREEN=FinalWriterPubScreen "||d2c(34)||HilfeVerz||"AGImport.guide"||d2c(34)
  174.                   WHEN event.trm_id = 104 THEN ende=1
  175.  
  176.                   OTHERWISE NOP
  177.                END
  178.             END
  179.          END
  180.       END
  181.       CALL TR_CLOSEPROJECT(window1)
  182.    END
  183.    CALL TR_DELETEAPP(app)
  184. END
  185. ELSE
  186.    CALL quit('Kann das Fenster nicht öffnen',10)
  187.  
  188. Exit
  189.  
  190. Program:
  191.  
  192. links=0
  193. address "REXX"
  194. verz=GetClip(AGImportVerz)
  195. If verz~="" then do
  196.    pos = max(index(verz,':'),lastpos('/',verz))
  197.    IF (pos ~=0) then verz = LEFT(verz, pos)
  198. END
  199.  
  200. MerkeSchablone=Schablone
  201.  
  202. guide = rtfilerequest(verz,,"Wähle das Guide aus...",,"rt_pubscrname=FinalWriterPubScreen rtfi_matchpat=#?")
  203. IF guide = "" then return 
  204. SetClip(AGImportVerz,Guide)
  205.  
  206. call Time('R')
  207.  
  208. IF ~OPEN('Guide', guide, "R") THEN Return
  209. DLaenge=Seek('Guide',0,'E')
  210. temp   =Seek('Guide',0,'B')
  211.  
  212. address command "search >ram:nodes search @node nonum "||d2c(34)||guide||d2c(34)
  213.  
  214. /*--------------------------- Kapitel raussuchen -------------------*/
  215.  
  216. Call Open('nodes', "ram:nodes", "R")
  217. xy=0
  218.  
  219. Do While EOF("nodes")~=1
  220.    line=Readln("nodes")
  221.    line=Delstr(line,1,6)
  222.  
  223.    xy=xy+1
  224.    pos4=Lastpos(d2c(34),line)
  225.    Select
  226.       When pos4=0 then do           /* Keine "" z.B.: MAIN*/
  227.          Name.xy=line; Ueberschrift.xy=line
  228.       End
  229.  
  230.       When pos4~=0 then do
  231.          pos3=LastPos(d2c(34),line,pos4-1)
  232.          Ueberschrift.xy=Right(line,Length(line)-pos3+1)
  233.          If pos3=1 then do          /* z.B.: "MAIN" */
  234.             Name.xy=Ueberschrift.xy
  235.          End
  236.          Else do
  237.  
  238.             pos2=LastPos(d2c(34),line,pos3-1)
  239.             If pos2=0 then do          /* z.B.: MAIN "Titel"  */
  240.                Name.xy=Delstr(line,pos3-1)
  241.             End
  242.             If pos2~=0 then do         /* z.B. "MAIN" "Titel" */
  243.                pos1=LastPos(d2c(34),line,pos2-1)
  244.                line   =Left(line,pos2)
  245.                Name.xy=Delstr(line,1,pos1-1)
  246.             End
  247.          End
  248.       End
  249.  
  250.       Otherwise NOP
  251.    End
  252.    name.xy=Strip(name.xy,'B',d2c(34))
  253.    name.xy=Strip(name.xy,'B',d2c(9))
  254.    name.xy=Strip(name.xy,'B',d2c(160))
  255.    name.xy=Strip(name.xy)
  256.  
  257.    Ueberschrift.xy=Strip(Ueberschrift.xy,'B',d2c(34))
  258.    Ueberschrift.xy=Strip(Ueberschrift.xy,'B',d2c(9))
  259.    Ueberschrift.xy=Strip(Ueberschrift.xy,'B',d2c(160))
  260.    Ueberschrift.xy=Strip(Ueberschrift.xy)
  261.  
  262.    If Ueberschrift.xy="" then Ueberschrift.xy=name.xy
  263. End
  264. name.0=xy; Ueberschrift.0=xy
  265. Call Close("nodes")
  266. address command "delete ram:nodes QUIET"
  267.  
  268. /*----------------------Ende - Kapitel raussuchen -------------------*/
  269.  
  270. address(FW)
  271. RedrawOff
  272.  
  273. Index=0
  274. xy=0
  275.  
  276. TextTool
  277. Font TSchrift
  278. FontSize TSize
  279.  
  280. /* änderbar */
  281. SectionSetup FirstPage 1 PageNumFormat Normal Footer 1 MPageOpt AllPages
  282.  
  283. line = ReadLn('Guide')
  284. IF EOF('Guide') THEN leave
  285.  
  286. If pos("@DATABASE", upper(line))=0 then do
  287.    ShowMessage 1 1 '"Diese Datei ist kein AmigaGuide bzw." 
  288.    "nicht AmigaGuide konform." ""
  289.    "Zurück" "" ""'
  290.    Call Close('Guide')
  291.    Return
  292. End
  293.  
  294. If speed=2 then Call AnfView
  295.  
  296. Do While 1
  297.  
  298.    Do While 1
  299.       line = ReadLn('Guide')
  300.        IF EOF('Guide') THEN leave
  301.       Stand=Seek('Guide',0,'C')
  302.  
  303.       Select 
  304.          When pos("@AUTHOR", upper(line))~=0 then do     /*Autor*/
  305.             Type "Autor: "||Delstr(line,1,8); NewParagraph
  306.          End
  307.  
  308.          when pos("@(C)", upper(line))~=0 then do     /*Autor*/
  309.             Type "Copyright: "||Delstr(line,1,5); NewParagraph
  310.          End
  311.  
  312.          when pos("@$VER:", upper(line))~=0 then do     /*Version*/
  313.             Type "Version: "||Delstr(line,1,7); NewParagraph
  314.          End
  315.  
  316.          when pos("@INDEX", upper(line))~=0 then Index=1 /*Index*/
  317.  
  318.          when pos("@NODE", upper(line))~=0 then leave    /*Anfang*/
  319.  
  320.          otherwise NOP
  321.  
  322.       End
  323.  
  324.    End
  325.  
  326.    /*Anfang eines Kapitels*/
  327.  
  328.    pos = Pos('@NODE',upper(line))
  329.    If pos~=0 then
  330.       ok=0
  331.       Do i=1 to name.0
  332.          If (pos(name.i,line)~=0 & pos(Ueberschrift.i,line)~=0) then do
  333.             If node=1 then do
  334.                FontSize USize; Font USchrift
  335.                Type Ueberschrift.i
  336.             End
  337.             If MerkeSchablone~="" then do
  338.                If i<10 then Type "ð0"||i
  339.                   else Type "ð"||i
  340.             End
  341.             If node=1 then do
  342.                FontSize TSize; Font TSchrift
  343.                NewParagraph; NewParagraph
  344.             end
  345.             ok=1
  346.             Leave
  347.          End
  348.          if ok=1 then leave
  349.       End
  350.  
  351.    Test=''           /* alle leeren Zeilen weg */
  352.    Do ForEver
  353.       Stand=Seek('Guide',0,'C')
  354.       test = ReadLn('Guide')
  355.       If eof('Guide') then leave      
  356.       if (pos('@TOC',upper(test))~=0 | pos('@NEXT',upper(test))~=0 | pos('@PREV',upper(test))~=0) then test=''
  357.  
  358.       If test~='' then do
  359.          s=Seek('Guide',Stand,'B')
  360.          Leave
  361.       End
  362.    End
  363.  
  364.  
  365.    Do While 1
  366.       Anz=0
  367.       Stand=Seek('Guide',0,'C')
  368.       line = ReadLn('Guide')
  369.        IF EOF('Guide') THEN leave
  370.       If pos("@ENDNODE", upper(line))~=0 then do
  371.          If Umbruch=1 then InsertPageBreak
  372.          Else do
  373.             NewParagraph; NewParagraph
  374.          End
  375.          Leave
  376.       End
  377.  
  378.       If Pos("@TITLE ",upper(line))~=0 Then do
  379.          line=Strip(upper(line),'L',"@TITLE ")
  380.          line=Strip(line,'B',d2c(34))
  381.          FontSize USize; Font USchrift
  382.          Type line; line=""
  383.          FontSize TSize; Font TSchrift
  384.       End
  385.  
  386.       Do While 1                                   /*Schleife bis alle gelöscht sind*/
  387.  
  388.          pos1 = pos('@{',line)
  389.          if pos1~=0 then do                        /* Befehl gefunden */
  390.             pos2 = pos('}',line, pos1)
  391.             If pos2=0 then do
  392.                ShowMessage 1 1 '"Fehlerhafter AmigaGuide-Befehl!" "Dokument ist deshalb an dieser Stelle nicht ganz korrekt." "" "Klick" "" ""'
  393.                leave
  394.             end
  395.             Kom=line
  396.             Kom=Left(Kom,pos2)
  397.  
  398.             If pos1>1 then do
  399.                Kom=Delstr(Kom,1,pos1-1)
  400.                Anz=Anz+1; line.Anz=Delstr(line,pos1)
  401.             End
  402.             Anz=Anz+1; line.Anz=Kom
  403.             line=Delstr(line,1,pos2)
  404.          End
  405.          Else Break
  406.       End
  407.  
  408.       Do i=1 to Anz
  409.          Select
  410.             When (upper(line.i)="@{FG SHINE}"|upper(line.i)="@{APEN}"|upper(line.i)="@{BPEN}") Then
  411.                FontColor Rot
  412.  
  413.             When (upper(line.i)="@{FG FILL}"|upper(line.i)="@{BG FILL}")~=0 Then
  414.                FontColor Blau
  415.  
  416.             When (upper(line.i)="@{FG TEXT}"|upper(line.i)="@{BG BACK}"|upper(line.i)="@{PARD}") Then
  417.                FontColor Schwarz
  418.  
  419.             When (upper(line.i)="@{UB}"|upper(line.i)="@{UI}"|upper(line.i)="@{UU}"|upper(line.i)="@{BODY}"|upper(line.i)="@{PLAIN}") Then
  420.                Style Normal
  421.  
  422.             When upper(line.i)="@{JLEFT}" Then
  423.                Justify Left
  424.  
  425.             When upper(line.i)="@{JRIGHT}" Then
  426.                Justify Right
  427.  
  428.             When upper(line.i)="@{AMIGAGUIDE}" Then
  429.                Type "AMIGAGUIDE®"
  430.  
  431.             When (upper(line.i)="@{LINE}"|upper(line.i)="@{PAR}") Then
  432.                NewParagraph
  433.  
  434.             When (upper(line.i)="@{B}"|pos("SHADOW",upper(line.i))~=0|pos("HIGHLIGHT",upper(line.i))~=0) Then
  435.                Style Bold
  436.  
  437.             When upper(line.i)="@{I}" Then
  438.                Style Italic
  439.  
  440.             When upper(line.i)="@{U}" Then
  441.                Style UnderLine
  442.  
  443.             When pos(d2c(34)||" LINK ",upper(line.i))~=0 Then do
  444.  
  445.                pos1=Pos(d2c(34),line.i)
  446.                pos2=Pos(d2c(34),line.i,pos1+1)
  447.                temp=Delstr(line.i,pos2)
  448.                temp=Delstr(temp,1,pos1)
  449.                Type temp
  450.  
  451.                pos1=Pos(d2c(34),line.i,pos2+1)
  452.                If pos1=0 then do
  453.                   pos1=Pos("LINK",upper(line.i))+4
  454.                   pos2=Pos("}",line.i,pos1+1)
  455.                End
  456.                else pos2=Pos(d2c(34),line.i,pos1+1)
  457.                temp=Delstr(line.i,pos2)
  458.                temp=Delstr(temp,1,pos1)
  459.  
  460.                ok=0
  461.                Do j=1 to name.0
  462.                   temp1=strip(name.j,'L',"@node")
  463.                   temp1=strip(temp1,'L'," ")
  464.                   temp1=strip(temp1,'B',d2c(34))
  465.                   If pos(temp1,temp)~=0 then do
  466.  
  467.           /* --------------Schablone auswerten -----------------*/
  468.                      Text=""; MerkeSchablone=Schablone
  469.                      Do ForEver
  470.                         a=pos("%",Schablone)
  471.                         If a=0 then do
  472.                            Text=Text||Schablone
  473.                            Leave
  474.                         End
  475.  
  476.                         Text=Text||Left(Schablone,a-1)
  477.                         Schablone=Delstr(Schablone,1,a)
  478.                         next=Left(Schablone,1)
  479.                         Schablone=Delstr(Schablone,1,1)
  480.  
  481.                         Select
  482.                            When upper(next)="K" then Text=Text||Ueberschrift.j
  483.                            When upper(next)="S" then do
  484.                               If j<10 then Text=Text||"¤0"||j
  485.                                  else Text=Text||"¤"||j
  486.                               links=links+1
  487.                            End
  488.                            Otherwise nop
  489.                         End
  490.                      End
  491.                      Type Text
  492.                      Schablone=MerkeSchablone
  493.                      ok=1
  494.                   End
  495.                   If ok=1 then leave
  496.           /* --------------Schablone auswerten Ende-----------------*/
  497.  
  498.                End
  499.             End
  500.  
  501.             When (pos("SYSTEM",upper(line.i))~=0|pos("RX",upper(line.i))~=0|pos("MACRO",upper(line.i))~=0) Then
  502.                NOP
  503.  
  504.             Otherwise Type line.i
  505.          End
  506.       End
  507.  
  508.       If line~='' then type line
  509.       NewParagraph
  510.       prozent=Trunc(Stand/DLaenge*100)
  511.       CALL TR_SETATTRIBUTE(window1,7,'TRAT_Value',prozent)
  512.  
  513.    END
  514.      IF EOF('Guide') THEN leave                      /*Ende des Dokumentes*/
  515. End
  516. Call Close('Guide')
  517. MoveToLine 1 0
  518.  
  519. If speed=2 then Call EndView
  520.  
  521. say Time('E')
  522.  
  523. CALL TR_SETATTRIBUTE(window1,7,'TRAT_Value',100)
  524.  
  525. If MerkeSchablone~="" then do
  526.    ShowMessage 1 1 '"Die Importierung ist abgeschlossen."
  527.    "Es wurden vorläufig 'links' Verweise gekennzeichnet."
  528.    "Die endgültigen Verweise der Seitenzahlen müssen noch gesetzt werden..."
  529.    "Klick" "" ""'
  530.  
  531.    ShowMessage 1 1 '"Bevor Sie die Verweise endgültig setzen,"
  532.    "erstellen Sie bitte eine EINFACHE SEITENNUMMER"
  533.    "(Menü: Extras | Einfache Seitennumer...)."
  534.    "Klick" "" ""'
  535. End
  536. Else do
  537.    ShowMessage 1 1 '"Die Importierung ist abgeschlossen."
  538.    "Sie wünschten keine Verweise." ""
  539.    "Klick" "" ""'
  540. End
  541.  
  542. Return
  543.  
  544. Verweisen:
  545.    address(FW)
  546.    ShowMessage 1 1 '"Hiermit werden die Seitenverweise endgültig gesetzt."
  547.    "Dies sollten Sie nur dann tun, wenn Sie das Guide"
  548.    "Ihren Bedürfnissen vollständig angepaßt haben."
  549.    "Weiter" "Abbruch" ""'
  550.    If result=2 then Return
  551.  
  552.    Status ParaPos
  553.    Zurueck=result
  554.  
  555.    MoveToLine 1 0
  556.    SetFind WRAP NO
  557.    FIND "ð"
  558.  
  559.    If speed=2 then Call AnfView
  560.  
  561.    i=0
  562.    Do ForEver
  563.       Find "ð"                  /* VerweisSetzungen suchen */
  564.       If RC~=0 then Break
  565.       i=i+1
  566.  
  567.       Status Page "Insert"
  568.       Seite.i=Result
  569.  
  570.       Status ParaPos
  571.       Anfpos=Word(result,1) Word(result,2)
  572.  
  573.       Cursor Right
  574.       Kennung=0
  575.  
  576.       EXTRACT
  577.       DO WHILE ((RESULT<":")&(RESULT>"/"))  /*Auslesen der VerweisZahl*/
  578.          Kennung=Kennung*10+Result
  579.          Cursor Right
  580.          Extract
  581.       END
  582.  
  583.       Status ParaPos
  584.       EndPos=Result
  585.  
  586.       MoveToPara AnfPos
  587.       ShiftDown
  588.       MoveToPara EndPos
  589.       ShiftUp
  590.       Delete
  591.  
  592.    End
  593.    Seite.0=i
  594.  
  595.    MoveToLine 1 0
  596.  
  597.    RedrawOff
  598.    Do ForEver
  599.       Find "¤"                  /* Verweise suchen und hinschreiben*/
  600.       If RC~=0 then Break
  601.  
  602.       Status ParaPos
  603.       Anfpos=Word(result,1) Word(result,2)
  604.  
  605.       Cursor Right
  606.       Kennung=0
  607.  
  608.       EXTRACT
  609.       DO WHILE ((RESULT<":")&(RESULT>"/"))  /*Auslesen der VerweisZahl*/
  610.          Kennung=Kennung*10+Result
  611.          Cursor Right
  612.          Extract
  613.       END
  614.  
  615.       Status ParaPos
  616.       EndPos=Result
  617.  
  618.       MoveToPara AnfPos
  619.       ShiftDown
  620.       MoveToPara EndPos
  621.       ShiftUp
  622.       Type Seite.Kennung
  623.  
  624.    End
  625.  
  626.    MoveToPara Zurueck
  627.    REDRAWON
  628.    REDRAW
  629.  
  630.    If speed=2 then Call EndView
  631.  
  632.    ShowMessage 1 1 '"Die Verweise wurden gesetzt."
  633.    "Ihr Dokument ist fertig."
  634.    "Bitte schließen Sie das Fenster: Suchen"
  635.    "Klick" "" ""'
  636.  
  637. Return
  638.  
  639. AnfView:
  640.    GetDisplayPrefs PageTabs SectionTabs   /*Register abschalten */
  641.    Zungen=result
  642.    DisplayPrefs PageTabs Off SectionTabs Off
  643.  
  644.    STATUS View
  645.    Zoom=result
  646.    View 20
  647. Return
  648.  
  649. EndView:
  650.    View Zoom
  651.    DisplayPrefs PageTabs word(Zungen,1) SectionTabs word(Zungen,2)
  652. Return
  653.  
  654. Voreinstellung:
  655. windowtags = WindowID(2),
  656.              WindowPosition('TRWP_CENTERDISPLAY'),
  657.              WindowFlags('TRWF_NOMINTEXTWIDTH'),
  658.              PubScreenName('FinalWriterPubScreen'),
  659.              WindowTitle('AmigaGuideImport-Voreinsteller'),
  660.              'HorizGroupAC SpaceS',
  661.                 'VertGroupA SpaceS',
  662.                    CenteredTextH('Überschriften:'),
  663.                    'SpaceS',
  664.                    'HorizGroupAC',
  665.                       TextID('S_chriftart:',1),
  666.                       'SpaceS',
  667.                       GetEntryButton(1),
  668.                       StringGadget(fond1,2),
  669.                    'EndGroup',
  670.                    'HorizGroupAC',
  671.                       TextID('Schrift_größe:',3),
  672.                       'SpaceS',
  673.                       StringGadget(USize,3),
  674.                    'EndGroup',
  675.                    'Space',
  676.                    CenteredTextH('Mengentext:'),
  677.                    'SpaceS',
  678.                    'HorizGroupAC',
  679.                       TextID('Sc_hriftart:',4),
  680.                       'SpaceS',
  681.                       GetEntryButton(4),
  682.                       StringGadget(fond2,5),
  683.                    'EndGroup',
  684.                    'HorizGroupAC',
  685.                       TextID('Schriftgr_öße:',6),
  686.                       'SpaceS',
  687.                       StringGadget(TSize,6),
  688.                    'EndGroup',
  689.                    'Space',
  690.                    CenteredTextH('Allgemeines:'),
  691.                    'SpaceS',
  692.                    'HorizGroupAC',
  693.                       TextID('Link_format:',7),
  694.                       'SpaceS',
  695.                       StringGadget(Schablone,7),
  696.                    'EndGroup',
  697.                    'HorizGroupAC',
  698.                       TextID('_@node schreiben:',10),
  699.                       'SpaceS',
  700.                       CheckBox(10) 'TRAT_Value' node,
  701.                       'Space',
  702.                       TextID('Seiten_umbruch:',9),
  703.                       'SpaceS',
  704.                       CheckBox(9) 'TRAT_Value' Umbruch,
  705.                    'EndGroup',
  706.                    'SpaceS',
  707.                    'HorizGroupAC',
  708.                       TextID('Gesch_windigkeit:',8),
  709.                       'SpaceS',
  710.                       CycleGadget('speed',speed-1,8) 'TRAT_Flags TRCY_RIGHTLABELS',
  711.                    'EndGroup',
  712.                    'SpaceS',
  713.                    'HorizSeparator',
  714.                    'SpaceS',
  715.                    'HorizGroupEC',
  716.                       Button('_Sichern',15),
  717.                       'SpaceS',
  718.                       Button('_Anwenden',25),
  719.                       'SpaceS',
  720.                       Button('Ab_bruch',20),
  721.                    'EndGroup SpaceS',
  722.                 'EndGroup SpaceS',
  723.              'EndGroup SpaceS',
  724.           'EndProject'
  725. app2 = TR_CREATEAPP('TRCA_Name AGImport2')
  726.  
  727. IF app2 ~= '00000000'x THEN DO
  728.    window2 = TR_OPENPROJECT(app2,windowtags)
  729.    IF window2 ~= '00000000'x THEN DO
  730.       ende2 = 0
  731.  
  732.       DO WHILE ~ende2
  733.          CALL TR_WAIT(app2,'')
  734.  
  735.          DO WHILE TR_HANDLEMSG(app2,'event')
  736.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende2 = 1
  737.  
  738.             IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  739.                SELECT
  740.                   WHEN event.trm_id = 8 THEN Do                /*BSAusgabe*/
  741.                      oldspeed=speed
  742.                      speed=event.trm_data+1
  743.                   END
  744.  
  745.                   WHEN event.trm_id = 9 THEN Do                /*Umbruch*/
  746.                      oldumbruch=Umbruch
  747.                      Umbruch=event.trm_data
  748.                   END
  749.  
  750.                   WHEN event.trm_id =10 THEN Do                /*@node*/
  751.                      oldnode=node
  752.                      node=event.trm_data
  753.                   END
  754.  
  755.                   OTHERWISE NOP
  756.                END
  757.             END
  758.  
  759.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  760.                SELECT
  761.                   WHEN event.trm_id = 1 THEN Do                /*USchriftart*/
  762.                      oldUSchrift=USchrift; oldfond1=fond1
  763.                      USchrift=rtfilerequest("FWFonts/SWOLFonts",,"Font auswählen...",,"rt_pubscrname=FinalWriterPubScreen")
  764.                      if USchrift~='' then do
  765.                         pos = max(index(USchrift,':'),lastpos('/',USchrift))
  766.                         If pos~=0 then fond1=Delstr(USchrift,1,pos)
  767.                         CALL TR_SETATTRIBUTE(window2,2,'TROB_String',fond1)
  768.                      End
  769.                   END
  770.  
  771.                   WHEN event.trm_id = 4 THEN Do                /*TSchriftart*/
  772.                      oldTSchrift=TSchrift; oldfond2=fond2
  773.                      TSchrift=rtfilerequest("FWFonts/SWOLFonts",,"Font auswählen...",,"rt_pubscrname=FinalWriterPubScreen")
  774.                      if TSchrift~='' then do
  775.                         pos = max(index(TSchrift,':'),lastpos('/',TSchrift))
  776.                         If pos~=0 then fond2=Delstr(TSchrift,1,pos)
  777.                         CALL TR_SETATTRIBUTE(window2,5,'TROB_String',fond2)
  778.                      End
  779.                   END
  780.  
  781.  
  782.                   WHEN event.trm_id = 25 THEN Do               /*okay*/
  783.                      Call Auslesen
  784.                      if okay=1 then Call Schreiben
  785.                   END
  786.  
  787.                   WHEN event.trm_id = 15 THEN Do               /*speichern*/
  788.                      Call Auslesen
  789.  
  790.                      If okay=1 then do
  791.                         Call Open("prefs","s:FW_AGImport.prefs","W")
  792.                         Writeln('prefs',USchrift)
  793.                         Writeln('prefs',USize)
  794.                         Writeln('prefs',TSchrift)
  795.                         Writeln('prefs',TSize)
  796.                         Writeln('prefs',Schablone)
  797.                         Writeln('prefs',speed)
  798.                         Writeln('prefs',Umbruch)
  799.                         Writeln('prefs',node)
  800.                         Call Close("prefs")
  801.  
  802.                         Call Schreiben
  803.                      End
  804.                   END
  805.  
  806.                   WHEN event.trm_id = 20 THEN Do                /*Abbrechen*/
  807.                      fond1=oldfond1; Umbruch =oldUmbruch; speed=oldspeed; node=oldnode
  808.                      fond2=oldfond2; USchrift=oldUSchrift; TSchrift=oldTSchrift
  809.                      ende2=1
  810.                   END
  811.  
  812.                   OTHERWISE NOP
  813.                END
  814.             END
  815.          END
  816.       END
  817.       CALL TR_CLOSEPROJECT(window2)
  818.    END
  819.    CALL TR_DELETEAPP(app2)
  820. END
  821. ELSE
  822.    CALL quit('Kann das Fenster nicht öffnen',10)
  823.  
  824. Return
  825.  
  826. Auslesen:
  827.    okay=0
  828.  
  829.    USize = TR_GETATTRIBUTE(window2,3,'TROB_String')
  830.    If Datatype(USize,'W')=0 then do
  831.       x=rtezrequest("Die SCHRIFTGRÖßE bitte ganzzahlig angeben!","_Achso","Eingabe-Fehler","rt_pubscrname=FinalWriterPubScreen")
  832.       Call TR_SendMessage(window2,3,'TROM_ACTIVATE',0)
  833.       return
  834.    end
  835.    If USize<4 then USize=4
  836.    If USize>360 then USize=360
  837.  
  838.    TSize = TR_GETATTRIBUTE(window2,6,'TROB_String')
  839.    If Datatype(TSize,'W')=0 then do
  840.       x=rtezrequest("Die SCHRIFTGRÖßE bitte ganzzahlig angeben!","_Achso","Eingabe-Fehler","rt_pubscrname=FinalWriterPubScreen")
  841.       Call TR_SendMessage(window2,6,'TROM_ACTIVATE',0)
  842.       return
  843.    end
  844.    If TSize<4 then TSize=4
  845.    If TSize>360 then TSize=360
  846.  
  847.    Schablone = TR_GETATTRIBUTE(window2,7,'TROB_String')
  848.  
  849.    okay=1
  850. Return
  851.  
  852. Schreiben:
  853.    If Umbruch=0 then UB="nein"
  854.       else UB="ja"
  855.    If node=0 then NO="nein"
  856.       else NO="ja"
  857.    o1="Überschrift: "||fond1||", Größe: "||USize
  858.    o2="Mengentext: "||fond2||", Größe: "||TSize
  859.    o3="Ausgabe: "||Schablone||" Geschwindigkeit: "||speed.speed
  860.    o4="Seitenumbruch: "||UB||", @node: "||NO
  861.    Call TR_SETATTRIBUTE(window1,5,'TRAT_TEXT',o1)
  862.    Call TR_SETATTRIBUTE(window1,6,'TRAT_TEXT',o2)
  863.    Call TR_SETATTRIBUTE(window1,7,'TRAT_TEXT',o3)
  864.    Call TR_SETATTRIBUTE(window1,8,'TRAT_TEXT',o4)
  865.    ende2=1
  866. Return
  867.  
  868. /*******************************************************************************
  869. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  870. *******************************************************************************/
  871.  
  872. SYNTAX:
  873.    CALL quit('Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)||R||SOURCELINE(sigl)||R||'Bitte informieren Sie den Autor...',20)
  874.  
  875. /*******************************************************************************
  876. ** Script beenden
  877. *******************************************************************************/
  878.  
  879. quit:
  880.    PARSE ARG message,rcode
  881.  
  882.    IF app ~= '00000000'x THEN DO
  883.       IF message ~= '' THEN
  884.          ret=rtezrequest(message,"_Okay","ACHTUNG!","rt_pubscrname=FinalWriterPubScreen")
  885.  
  886.       CALL TR_DELETEAPP(app)
  887.    END
  888.    ELSE
  889.       IF message ~= '' THEN DO
  890.          SAY message
  891.          SAY
  892.          OPTIONS PROMPT 'Bitte <RETURN> drücken'
  893.          PULL taste
  894.       END
  895.  
  896.    address command "flushtrx all"
  897.    EXIT(rcode)
  898.  
  899.